package com.seckill.util;

/**
 * @Author：
 * @date： 2022/3/7 10:34
 * @Description：
 ***/
public enum ResultCode {

    SUCCESS("操作成功", 20000),
    FAIL("操作失败", 20001),
    WEDNESDAY("用户名或密码错误", 20002),
    THURSDAY("权限不足", 20003),
    FRIDAY("远程调用失败", 20004),
    SATURDAY("重复操作", 20005),
    SUNDAY("没有对应的数据", 20006),
    DECOUNT_NUM("库存不足", 405),
    DECOUNT_HOT("库存不足", 205),
    DECOUNT_OK("库存递减成功", 200),
    ORDER_QUEUE("抢购商品正在排队", 202),
    ORDER_OK("抢单成功", 200);

    //文字描述
    private String msg;
    //对应的代码
    private Integer code;

    /**
     * 私有构造,防止被外部调用
     * @param msg
     */
    private ResultCode(String msg, Integer code) {
        this.msg = msg;
        this.code = code;
    }

    /**
     * 定义方法,返回描述,跟常规类的定义没区别
     * @return
     */
    public String getMsg() {
        return msg;
    }

    /**
     * 定义方法,返回代码,跟常规类的定义没区别
     * @return
     */
    public int getCode() {
        return code;
    }

    /**
     * 状态码描述
     * @return
     */
    public static String description(){
        StringBuilder builder = new StringBuilder("状态码信息：\n");
        for (ResultCode code :ResultCode.values()) {
            builder.append(code.name()+"====>"+code.getMsg()+"\n");
        }
        return builder.toString();
    }
}
